/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cadastropessoadao;

import java.util.List;
import java.util.Set;
import model.Email;
import model.Pessoa;
import model.Telefone;
import org.hibernate.Session;
import org.hibernate.Transaction;
import util.HibernateUtil;

/**
 *
 * @author Davi
 */
public class PessoaDao implements InterfasePessoaDao{

    private final Session session;

    public PessoaDao() {////contrutor
        this.session = HibernateUtil.getSessionFactory().///pegar uma sesão
                getCurrentSession();
    }
  @Override
        public void gravarPessoa(Pessoa pessoa,Set<Email> listaEmails,Set<Telefone> listaTelefones) {
           Transaction trans=session.beginTransaction();
            try {
                session.save(pessoa);
                for(Email email:listaEmails){
                    email.setPessoa(pessoa);
                    session.save(email);
                       }
                for(Telefone telefone:listaTelefones){
                    telefone.setPessoa(pessoa);
                    session.save(telefone);
                }
                trans.commit();
            } catch (Exception erro) {
          trans.rollback();
            }
            
        
    }

    @Override
    public void alterarPessoa(Pessoa pessoa) {
   Transaction trans = session.beginTransaction();
        session.update(pessoa);///grava no banco de 
        trans.commit();
    }

    @Override
    public void deletarPessoa(Pessoa pessoa) {
        Transaction trans = session.beginTransaction();
        session.delete(pessoa);
        trans.commit();
    }

        
    public List<Pessoa> listarPessoa() {
         Session s = HibernateUtil.getSessionFactory().getCurrentSession();
          s.beginTransaction();
        List listaPessoa = s.createQuery("FROM Pessoa").list();
         s.close();
         System.out.println(listaPessoa.toArray());
         
        return listaPessoa; 
}

}
//p